#include <stdio.h>

/**
 * 某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。
 * 要求换正好40张，且每种票子至少一张。
 * 问：有几种换法？
 *
 * TODO： 有没有更优解？
 */

/**
 * 暴力算法
 * 穷举所有可能性进行判断
 * @return
 */
int main() {
    int num_10, num_5, num_2, num_1;
    int money = 100, pages = 40, result = 0;

    for (num_10 = 1; num_10 <= money / 10; ++num_10) {
        for (num_5 = 1; num_5 <= pages - num_10; ++num_5) {
            for (num_2 = 1; num_2 <= pages - num_10 - num_5 ; ++num_2) {
                num_1 = pages - num_10 - num_5 - num_2;
                if (num_1 >= 1 && (10*num_10 + 5*num_5 + 2*num_2 + 1*num_1) == 100) {
                    result++;
                }
            }
        }

    }
    printf("%d", result);

    return 0;
}
